Provisional Credit
The Provisional Credit API enables financial institutions to temporarily credit a customer's account during a dispute investigation involving unauthorized or incorrect debit transactions. This API allows banks or business operations teams to initiate a provisional credit process, ensuring regulatory compliance and enhancing customer trust by providing timely resolution while the dispute is under review..
Method: POST
{{URL}}/rpc/paymentv2
Example
Request Parameters
Parameter | Description |
---|---|
method Mandatory | String RPC method name Constant Value : "ledger.transfer" |
id Mandatory | String Unique ID for the request |
payload.channel Mandatory | String Payment channel through which the transaction is processed. Constant Value : "API" |
payload.transactionType Mandatory | String Type of transaction. Constant value : "PROVISIONAL_CREDIT" |
payload.transactionDateTime Optional (in struct it is not required but if it is empty posted date will be empty) | String Date and time of the transaction initiation (YYYY-MM-DD HH:MM:SS) Sample Value : "2021-01-19 06:20:25" |
payload.reference Mandatory | String Unique reference ID of the transaction. Sample Value : "65323564567089" |
payload.reason Optional | String Purpose of the transaction. Sample value : "Dispute for Txn-QA00000009992007" |
payload.transactionAmount.amount Mandatory | String Transaction amount in cents. |
payload.transactionAmount.currency Mandatory | String Type of currency used. Sample Value : "USD" |
payload.creditorAccount Mandatory | Object Account details of the creditor |
payload.creditorAccount.identification Mandatory | String Account number of creditor |
payload.creditorAccount.identificationType Mandatory | String Type of account identification. Sample Value : "ACCOUNT_NUMBER" |
params.api.signature Mandatory | String Sign the request payload (params.payload) using private key. Sample Value: "MEQCIAbpxHpdOyBEVlmxPYv7m4Z1OvWJJYw7g7u3GE3T9nmvAiBjKHckSvb1M6O4t7FeWsn2z9Y3dMeYn3HyX/k28ek/Dw==" |
params.api.credential Mandatory | String Basic (space) [( "<Username>:<apiKey>" ) as Base64 encoded value] to be provided Sample Value: "Basic bmF2eWEubitlbXBAbmV0eGQuY29tOmY1OWIwY2NlOTU4ZTQ1YTc4MGVhZWIzYWVjOWVjZDAx" |
params.api.apiKey Mandatory | String API key is provided at the time of device registration. Sample Value : "f59b0cce958e45a780eaeb3aec9ecd01" |
- cURL
- C#
- Go
- NodeJS
curl --location 'http://localhost:5010/PL/rpc/paymentv2' \
--header 'signature: MEYCIQD7NCB1pEpzlVqSI/iiZF75iZ6M+KsNpjVDbMdm/lj/MAIhANdWP5t69WsbBGDrPbNcXoRDsLK1ON9kw2X4h2tLUksJ' \
--header 'Content-Type: application/json' \
--data '{"method":"ledger.transfer","id":"1","params":
{"payload":{"channel":"API","transactionType":"PROVISIONAL_CREDIT","transactionDateTime":"2025-05-05 06:20:25","reference":"65323564567089","reason":"Dispute for Txn-QA00000009992007","transactionAmount":{"amount":"300","currency":"USD"},"creditorAccount":{"identification":"874563222294167","identificationType":"ACCOUNT_NUMBER"}},"api":{"credential":"Basic bGVnYWxyZXBAZ21haWwuY29tOjFmZWU2NzQ2MzMxZjQ5YzdhOTQ2OTI5NDYxMWMyZWNj","signature":"MEUCIQDaR0g6Czl/Xo8fRqLIz2sjAPO+FO+8Jr5uoV19Gt1BzAIgHNXzaIOhoPfArRfb86GqMKzFTHOaKles3ykSBvnYAFY=","apiKey":"1fee6746331f49c7a9469294611c2ecc"}}}'
var options = new RestClientOptions("http://localhost:5010")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("/PL/rpc/paymentv2", Method.Post);
request.AddHeader("signature", "MEYCIQD7NCB1pEpzlVqSI/iiZF75iZ6M+KsNpjVDbMdm/lj/MAIhANdWP5t69WsbBGDrPbNcXoRDsLK1ON9kw2X4h2tLUksJ");
request.AddHeader("Content-Type", "application/json");
var body = @"{""method"":""ledger.transfer"",""id"":""1"",""params"":{""payload"":{""channel"":""API"",""transactionType"":""PROVISIONAL_CREDIT"",""transactionDateTime"":""2025-05-05 06:20:25"",""reference"":""65323564567089"",""reason"":""Dispute for Txn-QA00000009992007"",""transactionAmount"":{""amount"":""300"",""currency"":""USD""},""creditorAccount"":{""identification"":""874563222294167"",""identificationType"":""ACCOUNT_NUMBER""}},""api"":{""credential"":""Basic bGVnYWxyZXBAZ21haWwuY29tOjFmZWU2NzQ2MzMxZjQ5YzdhOTQ2OTI5NDYxMWMyZWNj"",""signature"":""MEUCIQDaR0g6Czl/Xo8fRqLIz2sjAPO+FO+8Jr5uoV19Gt1BzAIgHNXzaIOhoPfArRfb86GqMKzFTHOaKles3ykSBvnYAFY="",""apiKey"":""1fee6746331f49c7a9469294611c2ecc""}}}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "http://localhost:5010/PL/rpc/paymentv2"
method := "POST"
payload := strings.NewReader(`{"method":"ledger.transfer","id":"1","params":{"payload":{"channel":"API","transactionType":"PROVISIONAL_CREDIT","transactionDateTime":"2025-05-05 06:20:25","reference":"65323564567089","reason":"Dispute for Txn-QA00000009992007","transactionAmount":{"amount":"300","currency":"USD"},"creditorAccount":{"identification":"874563222294167","identificationType":"ACCOUNT_NUMBER"}},"api":{"credential":"Basic bGVnYWxyZXBAZ21haWwuY29tOjFmZWU2NzQ2MzMxZjQ5YzdhOTQ2OTI5NDYxMWMyZWNj","signature":"MEUCIQDaR0g6Czl/Xo8fRqLIz2sjAPO+FO+8Jr5uoV19Gt1BzAIgHNXzaIOhoPfArRfb86GqMKzFTHOaKles3ykSBvnYAFY=","apiKey":"1fee6746331f49c7a9469294611c2ecc"}}}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("signature", "MEYCIQD7NCB1pEpzlVqSI/iiZF75iZ6M+KsNpjVDbMdm/lj/MAIhANdWP5t69WsbBGDrPbNcXoRDsLK1ON9kw2X4h2tLUksJ")
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
var http = require('follow-redirects').http;
var fs = require('fs');
var options = {
'method': 'POST',
'hostname': 'localhost',
'port': 5010,
'path': '/PL/rpc/paymentv2',
'headers': {
'signature': 'MEYCIQD7NCB1pEpzlVqSI/iiZF75iZ6M+KsNpjVDbMdm/lj/MAIhANdWP5t69WsbBGDrPbNcXoRDsLK1ON9kw2X4h2tLUksJ',
'Content-Type': 'application/json'
},
'maxRedirects': 20
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function (chunk) {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
res.on("error", function (error) {
console.error(error);
});
});
var postData = JSON.stringify({
"method": "ledger.transfer",
"id": "1",
"params": {
"payload": {
"channel": "API",
"transactionType": "PROVISIONAL_CREDIT",
"transactionDateTime": "2025-05-05 06:20:25",
"reference": "65323564567089",
"reason": "Dispute for Txn-QA00000009992007",
"transactionAmount": {
"amount": "300",
"currency": "USD"
},
"creditorAccount": {
"identification": "874563222294167",
"identificationType": "ACCOUNT_NUMBER"
}
},
"api": {
"credential": "Basic bGVnYWxyZXBAZ21haWwuY29tOjFmZWU2NzQ2MzMxZjQ5YzdhOTQ2OTI5NDYxMWMyZWNj",
"signature": "MEUCIQDaR0g6Czl/Xo8fRqLIz2sjAPO+FO+8Jr5uoV19Gt1BzAIgHNXzaIOhoPfArRfb86GqMKzFTHOaKles3ykSBvnYAFY=",
"apiKey": "1fee6746331f49c7a9469294611c2ecc"
}
}
});
req.write(postData);
req.end();
Body
{
"method": "ledger.transfer",
"id": "1",
"params": {
"payload": {
"channel": "API",
"transactionType": "PROVISIONAL_CREDIT",
"transactionDateTime": "2025-05-05 06:20:25",
"reference": "65323564567089",
"reason": "Dispute for Txn-QA00000009992007",
"transactionAmount": {
"amount": "300",
"currency": "USD"
},
"creditorAccount": {
"identification": "874563222294167",
"identificationType": "ACCOUNT_NUMBER"
}
},
"api": {
"credential": "Basic bGVnYWxyZXBAZ21haWwuY29tOjFmZWU2NzQ2MzMxZjQ5YzdhOTQ2OTI5NDYxMWMyZWNj",
"signature": "MEUCIQDaR0g6Czl/Xo8fRqLIz2sjAPO+FO+8Jr5uoV19Gt1BzAIgHNXzaIOhoPfArRfb86GqMKzFTHOaKles3ykSBvnYAFY=",
"apiKey": "1fee6746331f49c7a9469294611c2ecc"
}
}
}
Response: 200
Response Parameters
Parameter | Description |
---|---|
api.type | String Acknowledgment type |
api.reference | String Reference number |
api.dateTime | String Response timestamp |
account.accountId | String Credited account ID |
account.balanceCents | Integer Updated account balance in cents |
account.status | String Enum Status of the account Valid values: - ACTIVE: The account is Active for all transactions. - DORMANT: Only inbound credit transactions are allowed. The account will automatically transition to 'ACTIVE' when an inbound credit transaction occurs. - SUSPENDED: No transactions are allowed in this state. The account must be manually changed to Active, typically due to compliance issues. It can also be reactivated based on a court order. - CLOSED: The account is permanently closed, and no transactions are allowed. Once an account is in this state, it cannot be reactivated. Sample value: "ACTIVE" |
transactionNumber | String System-generated transaction number |
transactionStatus | String Status of the Transaction Sample Value : "COMPLETED" |
transactionAmountCents | Integer Amount credited in cents |
originalRequestBase64 | String Base64-encoded original request |
processId | String Unique process identifier |
header.reference | String Transaction reference |
header.apiKey | String Echoed API Key |
header.signature | String Echoed Signature |
{
"id": "1",
"result": {
"api": {
"type": "PROVISIONAL_CREDIT_ACK",
"reference": "65323564567089",
"dateTime": "2025-08-11 12:07:17"
},
"account": {
"accountId": "200566639889443",
"balanceCents": 781485,
"status": "ACTIVE"
},
"transactionNumber": "QA00000002412007",
"transactionStatus": "COMPLETED",
"transactionAmountCents": 300,
"originalRequestBase64": "eyJjaGFubmVsIjoiQVBJIiwidHJhbnNhY3Rpb25UeXBlIjoiUFJPVklTSU9OQUxfQ1JFRElUIiwidHJhbnNhY3Rpb25EYXRlVGltZSI6IjIwMjUtMDUtMDUgMDY6MjA6MjUiLCJyZWZlcmVuY2UiOiI2NTMyMzU2NDU2NzEwMCIsInJlYXNvbiI6IlNldHRsZW1lbnQiLCJ0cmFuc2FjdGlvbkFtb3VudCI6eyJhbW91bnQiOiIzMDAiLCJjdXJyZW5jeSI6IlVTRCJ9LCJjcmVkaXRvckFjY291bnQiOnsiaWRlbnRpZmljYXRpb24iOiI4NzQ1NjMyMjIyOTQxNjciLCJpZGVudGlmaWNhdGlvblR5cGUiOiJBQ0NPVU5UX05VTUJFUiJ9fQ==",
"processId": "PL25081102398007"
},
"header": {
"reference": "65323564567100",
"apiKey": "1fee6746331f49c7a9469294611c2ecc",
"signature": "MEUCIFT/hK4/0iV6ifNzjPLbJVltWSqGBcfEDn6T2lSyqpMtAiEA8QCvx4Dg9puhfnF5H6ywGwEjODsPewUVmgP7u0+FMOs="
}
}